03c85873e85f42d03baa349918715f5fdbc3806b,work/_tpl/_jsp/ClipTestTemplate.java,ClipTestTemplate,_execute,#PageContext#,61
Before Change
ExpressionContext expressionContext = pageContext.getExpressionContext();
// TEXT: lineNumber: 2
// out.write("<h1>header</h1>\r\n<p>Clip Test</p>\r\n");
out.write(_jsp_string_1, 0, _jsp_string_1.length);
// NODE START: lineNumber: 4, offset: 1, length: 2, tagClassName: com.skin.ayada.jstl.core.SetTag, tagInstanceName: _jsp_SetTag_2
// <c:set var=\"myVar1\" value=\"123\"/>
pageContext.setAttribute("myVar1", 123);
// jsp.jstl.core.SetTag END
// NODE END: lineNumber: 4, tagClassName: com.skin.ayada.jstl.core.SetTag, tagInstanceName: _jsp_SetTag_2
// TEXT: lineNumber: 4
// out.write(" ####\r\n");
out.write(_jsp_string_4, 0, _jsp_string_4.length);
// NODE START: lineNumber: 6, offset: 4, length: 5, tagClassName: com.skin.ayada.jstl.core.ForEachTag, tagInstanceName: _jsp_ForEachTag_5
// <c:forEach var=\"myVar\" items=\"1,2,3\">...</c:forEach>
Object _jsp_old_var_5 = pageContext.getAttribute("myVar");
com.skin.ayada.jstl.core.ForEachTag _jsp_ForEachTag_5 = new com.skin.ayada.jstl.core.ForEachTag();
_jsp_ForEachTag_5.setParent((Tag)null);
_jsp_ForEachTag_5.setPageContext(pageContext);
_jsp_ForEachTag_5.setVar("myVar");
_jsp_ForEachTag_5.setItems("1,2,3");
if(_jsp_ForEachTag_5.doStartTag() != Tag.SKIP_BODY) {
while(true) {
// TEXT: lineNumber: 6
// out.write(" <p>");
out.write(_jsp_string_6, 0, _jsp_string_6.length);
// VARIABLE: lineNumber: 7
expressionContext.print(out, pageContext.getAttribute("myVar"));
// TEXT: lineNumber: 7
// out.write("</p>\r\n");
out.write(_jsp_string_8, 0, _jsp_string_8.length);
if(_jsp_ForEachTag_5.doAfterBody() != IterationTag.EVAL_BODY_AGAIN) {
break;
}
}
}
_jsp_ForEachTag_5.release();
pageContext.setAttribute("myVar", _jsp_old_var_5);
// jsp.jstl.core.ForEachTag END
// NODE END: lineNumber: 6, tagClassName: com.skin.ayada.jstl.core.ForEachTag, tagInstanceName: _jsp_ForEachTag_5
// TEXT: lineNumber: 8
// out.write("###\r\n");
out.write(_jsp_string_10, 0, _jsp_string_10.length);
// NODE START: lineNumber: 13, offset: 10, length: 8, tagClassName: com.skin.ayada.jstl.core.ChooseTag, tagInstanceName: _jsp_ChooseTag_11
// <c:choose>...</c:choose>
boolean _jsp_ChooseTag_11 = true;
// NODE START: lineNumber: 14, offset: 11, length: 3, tagClassName: com.skin.ayada.jstl.core.WhenTag, tagInstanceName: _jsp_WhenTag_12
// <c:when test=\"${1 == 1}\">...</c:when>
if(_jsp_ChooseTag_11 && ExpressionUtil.getBoolean(expressionContext, "${1 == 1}")) {
_jsp_ChooseTag_11 = false;
// TEXT: lineNumber: 14
// out.write(" Hello !\r\n");
out.write(_jsp_string_13, 0, _jsp_string_13.length);
} // jsp.jstl.core.WhenTag END
// NODE END: lineNumber: 14, tagClassName: com.skin.ayada.jstl.core.WhenTag, tagInstanceName: _jsp_WhenTag_12
// NODE START: lineNumber: 17, offset: 14, length: 3, tagClassName: com.skin.ayada.jstl.core.WhenTag, tagInstanceName: _jsp_WhenTag_15
// <c:when test=\"${1 == 1}\">...</c:when>
if(_jsp_ChooseTag_11 && ExpressionUtil.getBoolean(expressionContext, "${1 == 1}")) {
_jsp_ChooseTag_11 = false;
// TEXT: lineNumber: 17
// out.write(" Hi !\r\n");
out.write(_jsp_string_16, 0, _jsp_string_16.length);
} // jsp.jstl.core.WhenTag END
// NODE END: lineNumber: 17, tagClassName: com.skin.ayada.jstl.core.WhenTag, tagInstanceName: _jsp_WhenTag_15
// jsp.jstl.core.ChooseTag END
// NODE END: lineNumber: 13, tagClassName: com.skin.ayada.jstl.core.ChooseTag, tagInstanceName: _jsp_ChooseTag_11
// TEXT: lineNumber: 20
// out.write("###\r\n\r\n<p>test</p>\r\n<p>test</p>\r\n\r\n\r\n###\r\n\r\n");
out.write(_jsp_string_19, 0, _jsp_string_19.length);
// jsp:scriptlet: lineNumber: 35
for(int i = 0; i < 3; i++) {
// jsp:scriptlet END
// TEXT: lineNumber: 37
// out.write("<p>");
out.write(_jsp_string_22, 0, _jsp_string_22.length);
// jsp:expression: lineNumber: 37
expressionContext.print(out, (i));
// jsp:expression END
// TEXT: lineNumber: 37
// out.write("</p>\r\n");
out.write(_jsp_string_25, 0, _jsp_string_25.length);
// jsp:scriptlet: lineNumber: 39
}
// jsp:scriptlet END
// TEXT: lineNumber: 42
// out.write("###\r\n");
out.write(_jsp_string_28, 0, _jsp_string_28.length);
// jsp:scriptlet: lineNumber: 44
for(int i = 0; i < 3; i++) {
// jsp:scriptlet END
// TEXT: lineNumber: 46
// out.write("<p>");
out.write(_jsp_string_31, 0, _jsp_string_31.length);
// jsp:expression: lineNumber: 46
expressionContext.print(out, (i));
After Change
// TEXT: lineNumber: 1
// out.write("\r\n");
out.write(_jsp_string_3, 0, _jsp_string_3.length);
// TEXT: lineNumber: 1
// out.write("<div>\r\n <h3>");
out.write(_jsp_string_4, 0, _jsp_string_4.length);
// EXPRESSION: lineNumber: 2
expressionContext.print(out, expressionContext.getString("template.home"));
// TEXT: lineNumber: 2
// out.write("/include/header.jsp</h3>\r\n <div class=\"wrap\">header</div>\r\n</div>\r\n");
out.write(_jsp_string_6, 0, _jsp_string_6.length);
// jsp:directive.include: lineNumber: 3
// <jsp:directive.include include="" file="/include/header.jsp"/>
// TEXT: lineNumber: 3
// out.write("\r\n");
out.write(_jsp_string_9, 0, _jsp_string_9.length);
// jsp:scriptlet: lineNumber: 5
int a=1;
// jsp:scriptlet END
// TEXT: lineNumber: 5
// out.write("\r\n\r\n<h1>header</h1>\r\n<p>Clip Test</p>\r\n");
out.write(_jsp_string_12, 0, _jsp_string_12.length);
// NODE START: lineNumber: 11, offset: 12, length: 2, tagClassName: com.skin.ayada.jstl.core.SetTag, tagInstanceName: _jsp_SetTag_13
// <c:set var=\"myVar1\" value=\"123\"/>
pageContext.setAttribute("myVar1", 123);
// jsp.jstl.core.SetTag END
// NODE END: lineNumber: 11, tagClassName: com.skin.ayada.jstl.core.SetTag, tagInstanceName: _jsp_SetTag_13
// TEXT: lineNumber: 11
// out.write(" #### 1\r\n");
out.write(_jsp_string_15, 0, _jsp_string_15.length);
// NODE START: lineNumber: 13, offset: 15, length: 5, tagClassName: com.skin.ayada.jstl.core.ForEachTag, tagInstanceName: _jsp_ForEachTag_16
// <c:forEach var=\"myVar\" items=\"1,2,3\">...</c:forEach>
Object _jsp_old_var_16 = pageContext.getAttribute("myVar");
com.skin.ayada.jstl.core.ForEachTag _jsp_ForEachTag_16 = new com.skin.ayada.jstl.core.ForEachTag();
_jsp_ForEachTag_16.setParent((Tag)null);
_jsp_ForEachTag_16.setPageContext(pageContext);
_jsp_ForEachTag_16.setVar("myVar");
_jsp_ForEachTag_16.setItems("1,2,3");
if(_jsp_ForEachTag_16.doStartTag() != Tag.SKIP_BODY) {
while(true) {
// TEXT: lineNumber: 13
// out.write(" <p>");
out.write(_jsp_string_17, 0, _jsp_string_17.length);
// VARIABLE: lineNumber: 14
expressionContext.print(out, pageContext.getAttribute("myVar"));
// TEXT: lineNumber: 14
// out.write("</p>\r\n");
out.write(_jsp_string_19, 0, _jsp_string_19.length);
if(_jsp_ForEachTag_16.doAfterBody() != IterationTag.EVAL_BODY_AGAIN) {
break;
}
}
}
_jsp_ForEachTag_16.release();
pageContext.setAttribute("myVar", _jsp_old_var_16);
// jsp.jstl.core.ForEachTag END
// NODE END: lineNumber: 13, tagClassName: com.skin.ayada.jstl.core.ForEachTag, tagInstanceName: _jsp_ForEachTag_16
// TEXT: lineNumber: 15
// out.write("\r\n\r\n\r\n### 2\r\n");
out.write(_jsp_string_21, 0, _jsp_string_21.length);
// NODE START: lineNumber: 20, offset: 21, length: 8, tagClassName: com.skin.ayada.jstl.core.ChooseTag, tagInstanceName: _jsp_ChooseTag_22
// <c:choose>...</c:choose>
boolean _jsp_ChooseTag_22 = true;
// NODE START: lineNumber: 21, offset: 22, length: 3, tagClassName: com.skin.ayada.jstl.core.WhenTag, tagInstanceName: _jsp_WhenTag_23
// <c:when test=\"${1 == 1}\">...</c:when>
if(_jsp_ChooseTag_22 && ExpressionUtil.getBoolean(expressionContext, "${1 == 1}")) {
_jsp_ChooseTag_22 = false;
// TEXT: lineNumber: 21
// out.write(" Hello !\r\n");
out.write(_jsp_string_24, 0, _jsp_string_24.length);
} // jsp.jstl.core.WhenTag END
// NODE END: lineNumber: 21, tagClassName: com.skin.ayada.jstl.core.WhenTag, tagInstanceName: _jsp_WhenTag_23
// NODE START: lineNumber: 24, offset: 25, length: 3, tagClassName: com.skin.ayada.jstl.core.WhenTag, tagInstanceName: _jsp_WhenTag_26
// <c:when test=\"${1 == 1}\">...</c:when>
if(_jsp_ChooseTag_22 && ExpressionUtil.getBoolean(expressionContext, "${1 == 1}")) {
_jsp_ChooseTag_22 = false;
// TEXT: lineNumber: 24
// out.write(" Hi !\r\n");
out.write(_jsp_string_27, 0, _jsp_string_27.length);
} // jsp.jstl.core.WhenTag END
// NODE END: lineNumber: 24, tagClassName: com.skin.ayada.jstl.core.WhenTag, tagInstanceName: _jsp_WhenTag_26
// jsp.jstl.core.ChooseTag END
// NODE END: lineNumber: 20, tagClassName: com.skin.ayada.jstl.core.ChooseTag, tagInstanceName: _jsp_ChooseTag_22
// TEXT: lineNumber: 27
// out.write("\r\n### 3\r\n<p>test</p>\r\n<p>test</p>\r\n### 4\r\n\r\n");
out.write(_jsp_string_30, 0, _jsp_string_30.length);
// jsp:scriptlet: lineNumber: 37
for(int i = 0; i < 3; i++) {
// jsp:scriptlet END
// TEXT: lineNumber: 39
// out.write("<p>");
out.write(_jsp_string_33, 0, _jsp_string_33.length);
// jsp:expression: lineNumber: 40
expressionContext.print(out, (i));
// jsp:expression END
// TEXT: lineNumber: 40
// out.write("</p>\r\n");
out.write(_jsp_string_36, 0, _jsp_string_36.length);
// jsp:scriptlet: lineNumber: 41
}
// jsp:scriptlet END
// TEXT: lineNumber: 43
// out.write("\r\n### 5\r\n");
out.write(_jsp_string_39, 0, _jsp_string_39.length);
// jsp:scriptlet: lineNumber: 47
for(int i = 0; i < 3; i++) {
// jsp:scriptlet END
// TEXT: lineNumber: 49
// out.write("<p>");
out.write(_jsp_string_42, 0, _jsp_string_42.length);
// jsp:expression: lineNumber: 49
expressionContext.print(out, (i));
// jsp:expression END
// TEXT: lineNumber: 49
// out.write("</p>\r\n");
out.write(_jsp_string_45, 0, _jsp_string_45.length);
// jsp:scriptlet: lineNumber: 51
}
// jsp:scriptlet END
// TEXT: lineNumber: 54
// out.write("## 6\r\nè¿™æ˜¯ä¸€ä¸ªæ ¼å¼?处ç?†çš„æµ‹è¯•页é?¢ï¼Œæµ‹è¯•编译程åº?çš„clip函数是å?¦æ£ç¡®ã€‚\r\n编译程åº?å¯¹æ ‡ç¾çš„处ç?†è§„则:\r\n1. jsp指令ã€?jsp生命ã€?jsp脚本ã€?AyadaæŒ‡ä»¤ï¼Œéƒ½ä¼šç»Ÿä¸€åˆ é™¤æŽ‰å‰?å¯¼ç©ºæ ¼å’Œå?Žç¼€å›žè½¦ã€‚ä¸?支æŒ?é…?置,统一处ç?†ã€‚\r\n2. æ ‡ç¾é…?ç½®å¢žåŠ ignore-whitespace选项,å?¯é€‰å€¼[true|false],如果是trueï¼Œåˆ é™¤æŽ‰å‰?å¯¼ç©ºæ ¼å’Œå?Žé?¢çš„回车。默认是true。t:import指令对应的属性是ignoreWhitespace。\r\nå‰?å¯¼ç©ºæ ¼åŒ…æ‹¬ç©ºæ ¼å’Œ\\t符。\r\nå?Žç¼€å›žè½¦åŒ…括\\rå’Œ\\n。å?ªåˆ 除第一个回车。\r\n\r\n编译程åº?在编译出æ?¥æ‰€æœ‰èŠ‚ç‚¹åˆ—è¡¨ä¹‹å?Žï¼Œä¼šå¯¹èŠ‚ç‚¹åˆ—è¡¨è¿›è¡Œä¸¤æ¬¡æ‰«æ??:\r\n1. 第一次扫æ??ï¼Œæ ¹æ?®æ ‡ç¾çš„ignoreWhitespace定义决定是å?¦å¯¹æ ‡ç¾å?šæ ¼å¼?处ç?†ã€‚\r\n 如果ignoreWhitespace为trueï¼Œåˆ™åˆ é™¤æ ‡ç¾çš„å‰?å¯¼ç©ºæ ¼ï¼Œå‰?å¯¼ç©ºæ ¼æ˜¯æŒ‡æ ‡ç¾å‰?é?¢çš„ç¬¬ä¸€ä¸ªæ–‡æœ¬èŠ‚ç‚¹çš„å°¾ç©ºæ ¼ã€‚\r\n åˆ é™¤æ ‡ç¾ä¹‹å?Žçš„第一个回车æ?¢è¡Œç¬¦ã€‚æ ‡ç¾çš„开始节点和结æ?ŸèŠ‚ç‚¹éƒ½æŒ‰ç…§è¿™ä¸ªçš„è§„åˆ™å¤„ç?†ã€‚所有的jsp指令ã€?脚本ã€?声明也按照这个规则处ç?†ã€‚\r\n\r\n2. 第二次扫æ??ï¼Œæ ¹æ?®æ ‡ç¾çš„bodyContentå®šä¹‰æ¸…é™¤æ ‡ç¾å†…的文本节点或者。\r\n\r\næ€»çš„åŽŸåˆ™æ˜¯ï¼šæ ‡ç¾æˆ–者脚本所å? 的行ä¸?输出。å?³ï¼šæŠŠæ ‡ç¾æˆ–者脚本所å? çš„è¡Œåˆ é™¤ä¹‹å?Žå°±æ˜¯æœ€ç»ˆè¾“å‡ºçš„æ ¼å¼?。 \r\n");
out.write(_jsp_string_48, 0, _jsp_string_48.length);
out.flush();
jspWriter.flush();